草庐IT

Android SurfaceView Canvas 用线程绘制

全部标签

c# - 如何锁定在多个线程中使用的变量

我在这里问了一个很糟糕的问题Lockonavariableinmultiplethreads所以为了清楚起见,我将在这里提问,希望我能正确提问。classAcreatesinstanceofclassBhasmethodAthatcanupdate&usesclassB'smyVarhasmethodBthatcanupdate&usesclassB'smyVarclassBhasavariablemyVarmethodA和methodB都可以在单独的线程中运行(在主线程中调用)。我如何确保这是线程安全的? 最佳答案 使用lock关

c# - 线程不会在应用程序关闭时中止

我有一个应用程序在单独的Thread中执行一些后台任务(网络监听和读取)。然而,当我关闭应用程序(单击标题栏上的“x”按钮)时,线程似乎没有被终止/中止。那是因为主线程例程是while(true){...}吗?这里的解决方案是什么?我一直在寻找线程的一些“中断”标志作为“while”循环的条件,但没有找到。 最佳答案 最简单的方法是设置IsBackground线程的属性为真。这将阻止它保持应用程序打开。当所有非后台线程终止时,应用程序终止。停止线程的一种更可控的方法是向它发送一条消息以彻底关闭并确保它在让您的主线程终止之前已终止。我

c# - 使用 Graphics.DrawImage() 绘制带透明度/Alpha channel 的图像

我正在复制图像。(我的实际代码是调整图像大小,但这与我的问题无关。)我的代码看起来像这样。Imagesrc=...using(Imagedest=newBitmap(width,height)){Graphicsgraph=Graphics.FromImage(dest);graph.InterpolationMode=InterpolationMode.HighQualityBicubic;graph.DrawImage(src,0,0,width,height);dest.Save(filename,saveFormat);}除非src是从具有透明胶片(例如GIF)或alphach

c# - List<T>.AddRange() 线程安全吗?

我可以在不锁定的情况下从多个线程安全地调用List.AddRange(r)吗?如果不是,我会遇到什么样的麻烦? 最佳答案 否,itsdocumentation没有说它是线程安全的,因此它不是。Publicstatic(SharedinVisualBasic)membersofthistypearethreadsafe.Anyinstancemembersarenotguaranteedtobethreadsafe.至于哪里会出错,想想AddRange(newItems)做了什么:检查内部数组是否有足够的空间如果不是:分配一个新数组将

c# - 调用线程无法访问此对象,因为另一个线程拥有它 - WPF

这个问题在这里已经有了答案:Thecallingthreadcannotaccessthisobjectbecauseadifferentthreadownsit[duplicate](4个答案)关闭8年前。我有通过套接字连接的硬件。我必须每5秒检查一次硬件是否已连接,由复选框指示。我实现了一个功能:privatestaticSystem.Timers.TimeraTimer;publicMainWindow(){InitializeComponent();client.BeginConnect(remoteEP,newAsyncCallback(ConnectCallback),cl

c# - 单例成员的线程安全使用

我有一个多个类使用的C#单例类。通过Instance访问Toggle()方法线程安全吗?如果是,根据什么假设、规则等。如果不是,为什么和我该如何解决?publicclassMyClass{privatestaticreadonlyMyClassinstance=newMyClass();publicstaticMyClassInstance{get{returninstance;}}privateintvalue=0;publicintToggle(){if(value==0){value=1;}elseif(value==1){value=0;}returnvalue;}}

c# - C# 中的多线程 NamePipeServer

你好我想使用.NET3.5中新增的NamedPipeServerStream进行命名管道通信。我想写多线程管道服务器。它是默认处理的还是我应该为此编写代码。我的管道服务器应该一次处理多个请求任何解决方案或代码? 最佳答案 您可以通过重复创建NamedPipeServerStream并等待一个连接,然后为该NamedPipeServerStream实例生成一个线程来编写多线程管道服务器。根据下面链接的.NETMSDN文档,您只能有254个并发客户端。对于Win32API,虽然您可以传递一个特殊值以获得基于系统资源的无限制。如下所述,M

c# - 什么是非线程安全?

有很多文章和讨论解释了为什么构建线程安全类是好的。据说如果多个线程访问例如同时一个领域,只能有一些不好的后果。那么,保持非线程安全代码的意义何在?我主要关注.NET,但我相信主要原因与语言无关。例如.NET静态字段不是线程安全的。如果它们默认是线程安全的,结果会怎样?(无需执行“手动”锁定)。使用(实际上默认)非线程安全有什么好处?我想到的一件事是性能(尽管更多是猜测)。很直观的是,当函数或字段不需要线程安全时,它不应该是。然而,问题是:为什么?线程安全只是您始终需要实现的额外代码量吗?在什么情况下我可以100%确定例如一个字段不会同时被两个线程使用? 最佳

c# - 使用 SpriteBatch 在 XNA 中绘制矩形

我正在尝试使用spritebatch在XNA中绘制一个矩形。我有以下代码:Texture2Drect=newTexture2D(graphics.GraphicsDevice,80,30);Vector2coor=newVector2(10,20);spriteBatch.Draw(rect,coor,Color.Chocolate);但由于某种原因它没有绘制任何东西。知道出了什么问题吗?谢谢! 最佳答案 这是您可以放入从Game派生的类中的代码。这演示了在何处以及如何创建一个白色的1像素正方形纹理(以及完成后如何处理它)。以及如何

c# - 如何在 C# 中终止线程?

我想在C#线程方面碰碰运气,我知道一些关于C线程的知识。所以我只想问我是否想终止一个线程,我应该用smt.Abort()来完成或者它会在函数结束后“自杀”?另外,C#中的C中有没有类似pthread_exit()的东西? 最佳答案 Thread.Abort将“杀死”线程,但这大致相当于:场景:你想关掉你的电脑解决方案:将炸药绑在计算机上,点燃它,然后运行。最好通过CancellationTokenSource.Cancel触发“退出条件”,设置一些(安全访问的)“正在运行”bool等,然后调用Thread.Join。这更像是:场景: